﻿Module Module1
  Sub Main()

  End Sub
  Public Structure ricovero
    ' Public: accessibili dall'esterno
    Public nome As String
    Public cognome As String
    Public telefono As String
    ' Friend: accessibili all'interno dello 
    ' stesso assembly
    Friend numeroCartella As Integer
    Friend costoRicovero As Decimal
    Friend giorniRicovero As Short
    ' Private: accessibili solo all'interno
    ' della struttura stessa
    Private diagnosi As String
    Private codiceIntervento As String
    ' la procedura Friend può accedere a
    ' variabili private
    Friend Sub calcolaCosto(ByVal costo _
          As Decimal)
      If diagnosi >= "V" Then
        costoRicovero = _
           giorniRicovero * 130.0
      Else
        costoRicovero = _
           giorniRicovero * 300.0
      End If
    End Sub
    ' Proprietà per ricoveri superiori _
    ' a 20 giorni
    Friend ReadOnly Property _
           degenzaOltresoglia() As Boolean
      Get
        Return giorniRicovero > 20
      End Get
    End Property
    ' Rilevazione modifica di un dato pubblico
    Public Event cambioTelefono(ByVal _
       nuovoTelefono As Long)
  End Structure
End Module
